"""
Functions to normalize various inputs
"""
import hashlib


def generate_system_username(username):
    """
    Generate a posix username from given username.

    If username < 26 char, we just return it.
    Else, we hash the username, truncate username at
    26 char, append a '-' and first add 5char of hash. 
    This makes sure our usernames are always under 32char.
    """

    if len(username) < 26:
        return username

    userhash = hashlib.sha256(username.encode('utf-8')).hexdigest()
    return '{username_trunc}-{hash}'.format(
        username_trunc=username[:26],
        hash=userhash[:5]
    )